Add flags to vm_alloc to zero allocated buffer.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 8 Jan 2004 02:52:34 +0000 (02:52 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 8 Jan 2004 02:52:34 +0000 (02:52 +0000)
gpsbabel/defs.h
gpsbabel/gpx.c
gpsbabel/vmem.c

index dc344205d5b5e3e5278494b44c69dffc728c6758..b74a8a70a2be1d74cfdb127477d6f05899a14669 100644 (file)
@@ -246,11 +246,15 @@ void setshort_mustupper(void *, int n);
 void setshort_mustuniq(void *, int n);
 void setshort_whitespace_ok(void *, int n);
 
+/*
+ *  Vmem flags values.
+ */
+#define VMFL_NOZERO (1 << 0)
 typedef struct vmem {
        void *mem;              /* visible memory object */
        size_t size;            /* allocated size of object */
 } vmem_t;
-vmem_t         vmem_alloc(size_t);
+vmem_t         vmem_alloc(size_t, int flags);
 void   vmem_free(vmem_t*);
 void   vmem_realloc(vmem_t*, size_t);
 
index 2c3f9ad1deed3d8c27730d652da6929c31fa1b2b..95c3be0e78f8d507579ace402b4b2f343a4c1fe0 100644 (file)
@@ -684,13 +684,16 @@ gpx_rd_init(const char *fname)
 
 
        file_time = 0;
-       current_tag = vmem_alloc(1);
+       current_tag = vmem_alloc(1, 0);
+       *((char *)current_tag.mem) = '\0';
        
        psr = XML_ParserCreate(NULL);
        if (!psr) {
                fatal(MYNAME ": Cannot create XML Parser\n");
        }
-       cdatastr = vmem_alloc(1);
+       cdatastr = vmem_alloc(1, 0);
+       *((char *)cdatastr.mem) = '\0';
+
        XML_SetElementHandler(psr, gpx_start, gpx_end);
        XML_SetCharacterDataHandler(psr, gpx_cdata);
 }
index bef4d970dd4871e7f0d8deef4102059b763a7622..b5dbde2cfaf5e0aa36c1fb281ecc133788176305 100644 (file)
 #include <stdlib.h>
 
 vmem_t 
-vmem_alloc(size_t size)
+vmem_alloc(size_t size, int flags)
 {
        vmem_t vm;
-       vm.mem = xmalloc(size);
+       /*
+        * By default, zero the allocated thingy.
+        */
+       if (flags & VMFL_NOZERO)
+               vm.mem = xmalloc(size);
+       else
+               vm.mem = xcalloc(size, 1);
        vm.size = size;
        return vm;
 }